/**
 * 从网络获取书籍信息控制器
 *
 * 从豆瓣书籍获取：https://book.douban.com/isbn/<isbn>
 *
 * 所需模块支持
 * 1.Axios - 支持 http/https的网络访问模块（支持Node.js和Browser）
 * 2.Cheerio - 类似jquery的工作方式进行web页面资源的读取模块
 *
 * npm install axios
 * npm install cheerio
 * npm install -D @types/cheerio
 */

const express = require("express");
const axios = require("axios").default;
const cheerio = require("cheerio");

const util = require("../common/util");
const config = require("../common/config");

//设置axios访问server的user-agent
const axiosConfig = {
  headers: {
    "User-Agent":
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.34",
  },
};

/**
 *
 * @param {express.Request} req
 * @param {express.Response} res
 */
function fetchFromDouban(req, res) {
  let isbn = req.params.isbn; //获取路由参数中的isb值

  let doubanUrl = config.douban.baseUrl + isbn;
  axios
    .get(doubanUrl, axiosConfig)
    .then((result) => {
      util.log(result);
      res.json(util.FormatJSONData(200, "从豆瓣获取书籍信息成功"));
    })
    .catch((error) => {
      util.err(error);
      res.json(
        util.FormatJSONData(400, "从豆瓣获取书籍信息失败", { error: error })
      );
    });
}

module.exports = {
  fetchFromDouban,
};
